Skip to content

Method: Kunde(String, Adresse)

1: package auftraege.versand;
2:
3: import auftraege.auftragsBildungsParameter.abstraction.DokumentenklassenVariable;
4: import auftraege.auftragsBildungsParameter.abstraction.DokumentenklassenVariablenVisitor;
5: import com.google.common.base.Objects;
6:
7: /**
8: * Ein Kunde besitzt folgende Attribute: Adresse und Identifier(String) damit man ihn in einem Produktionsauftrag eindeutig identifizieren kann.
9: */
10: public final class Kunde implements DokumentenklassenVariable {
11:         private final Adresse adresse;
12:         private final String identifier;
13:
14:
15:         private Kunde(final String identifier, final Adresse adresse) {
16:                 this.identifier = identifier;
17: this.adresse = adresse;
18: }
19:
20:         /**
21:          * Üblicher Getter für das Attribut adresse.
22:          *
23:          * @return liefert adresse.
24:          */
25:         public Adresse getAdresse() {
26:                 return this.adresse;
27:         }
28:
29:         /**
30:          * Getter für den Namen des Kunden.
31:          *
32:          * @return liefert NFamen des Kunden.
33:          */
34:         public String getIdentifier() {
35:                 return this.identifier;
36:         }
37:
38:         /**
39:          * TODO Art: Feature request; hier ist nur ein dummy-Konstruktor, das sollte auch nochmal behandelt werden.
40:          * <p>
41:          * vielleicht erstellt einen Kunden, welcher über den identifier eindeutig identifiziert werden kann
42:          *
43:          * @param identifier eindeutiger identifier
44: * @return das erstellte Kundenobjekt.
45:          */
46:         public static Kunde create(final String identifier) {
47:                 //TODO Art: Feature request; eigentlich müsste hier durch eine Liste von Kunden iteriert werdnen und dieser herausgefiltert werden.
48:                 return new Kunde(identifier, null);
49:         }
50:
51:         @Override
52:         public <T> T accept(final DokumentenklassenVariablenVisitor<T> v) {
53:                 return v.handle(this);
54:         }
55:
56: @Override
57: public boolean equals(final Object o) {
58: if (this == o) {
59: return true;
60: }
61: if (!(o instanceof Kunde)) {
62: return false;
63: }
64: final Kunde kunde = (Kunde) o;
65: return Objects.equal(this.adresse, kunde.adresse)
66: && Objects.equal(this.identifier, kunde.identifier);
67: }
68:
69: @Override
70: public int hashCode() {
71: return Objects.hashCode(this.adresse, this.identifier);
72: }
73: }